package classi;

import java.io.Serializable;
import java.util.Date;
import java.util.TreeSet;

public class Appello implements Serializable, Cloneable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3918647584750134882L;
	private String nome = null;
	private Date dataEsame = null;
	private Date dateScadenza = null;
	private Traccia traccia = null;
	private TreeSet<Studente> listaPrenotati = null;
	
	
	public Appello(String nome, String descrizione, Date dataEsame,
			Date dateScadenza, Traccia traccia) {
		super();
		this.nome = nome;
		this.dataEsame = dataEsame;
		this.dateScadenza = dateScadenza;
		this.traccia = traccia;
		this.listaPrenotati = new TreeSet<Studente>();
	}


	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		return super.clone();
	}


	public static long getSerialversionuid() {
		return serialVersionUID;
	}


	public String getNome() {
		return nome;
	}


	


	public Date getDataEsame() {
		return dataEsame;
	}


	public Date getDataScadenza() {
		return dateScadenza;
	}



	public Traccia getTraccia() {
		return traccia;
	}


	public TreeSet<Studente> getListaPrenotati() {
		return listaPrenotati;
	}


	public void setNome(String nome) {
		this.nome = nome;
	}




	public void setDataEsame(Date dataEsame) {
		this.dataEsame = dataEsame;
	}


	public void setDateScadenza(Date dateScadenza) {
		this.dateScadenza = dateScadenza;
	}



	public void setTraccia(Traccia traccia) {
		this.traccia = traccia;
	}


	public void setListaPrenotati(TreeSet<Studente> listaPrenotati) {
		this.listaPrenotati = listaPrenotati;
	}


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((dataEsame == null) ? 0 : dataEsame.hashCode());
		result = prime * result
				+ ((dateScadenza == null) ? 0 : dateScadenza.hashCode());
		result = prime * result
				+ ((listaPrenotati == null) ? 0 : listaPrenotati.hashCode());
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		result = prime * result + ((traccia == null) ? 0 : traccia.hashCode());
		return result;
	}


	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof Appello))
			return false;
		Appello other = (Appello) obj;
		if (dataEsame == null) {
			if (other.dataEsame != null)
				return false;
		} else if (!dataEsame.equals(other.dataEsame))
			return false;
		if (dateScadenza == null) {
			if (other.dateScadenza != null)
				return false;
		} else if (!dateScadenza.equals(other.dateScadenza))
			return false;
		if (listaPrenotati == null) {
			if (other.listaPrenotati != null)
				return false;
		} else if (!listaPrenotati.equals(other.listaPrenotati))
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		if (traccia == null) {
			if (other.traccia != null)
				return false;
		} else if (!traccia.equals(other.traccia))
			return false;
		return true;
	}


	


	
	
	
	
	
	

}
